package com.jprocms.module.cms.dal.redis;


import com.jpro.framework.common.util.date.DateUtils;

/**
 * System Redis Key 枚举类
 *
 * @author jprocms
 */
public interface RedisKeyConstants {

    /**
     * 内容浏览量的缓存
     * <p>
     * KEY 格式：content:view:{id}
     * VALUE 数据类型：String 内容id信息
     */
    String CONTENT_VIEW = "jprocms:content:view:";

    /**
     * 栏目浏览量的缓存
     * <p>
     * KEY 格式：channel:view:{id}
     * VALUE 数据类型：String 栏目id信息
     */
    String CHANNEL_VIEW = "jprocms:channel:view:";
    /**
     * 栏目今日浏览量的缓存
     * <p>
     * KEY 格式：channel:view:{id}
     * VALUE 数据类型：String 栏目id信息
     */
    String CHANNEL_DAY_VIEW = "jprocms:channel:day-view:";
    /**
     * 栏目今年浏览量的缓存
     * <p>
     * KEY 格式：channel:view:{id}
     * VALUE 数据类型：String 栏目id信息
     */
    String CHANNEL_YEAR_VIEW = "jprocms:channel:year-view:";

    /**
     * 站点浏览量的缓存
     * <p>
     * KEY 格式：site:view:{id}
     * VALUE 数据类型：String 站点id信息
     */
    String SITE_VIEW = "jprocms:site:view:";
    /**
     * 站点今日浏览量缓存
     * <p>
     * KEY 格式：site:day-view:{id}
     * VALUE 数据类型：String 站点id信息
     */
    String SITE_DAY_VIEW = "jprocms:site:day-view:";
    /**
     * 站点今年浏览量缓存
     * <p>
     * KEY 格式：site:year-view:{id}
     * VALUE 数据类型：String 站点id信息
     */
    String SITE_YEAR_VIEW = "jprocms:site:year-view:";
    /**
     * 站点二级缓存key
     * <p>
     * KEY 格式：jprocms:site:cachekey
     * VALUE 数据类型：String 站点id信息
     */
    String SITE_CACHE_KEY = "jprocms:site:cachekey";
    /**
     * 内容预览id
     * <p>
     * KEY 格式：jprocms:livepreview:contentid
     * VALUE 数据类型：Long 内容预览id
     */
    String LIVE_PREVIEW_CONTENTID = "jprocms:livepreview:contentid";

    /**
     * 内容预览锁
     */
    String LIVE_PREVIEW_LOCK = "jprocms:livepreview:lock";

    /**
     * 邮件验证码缓存
     * <p>
     * KEY 格式：jprocms:emailcode:{email}:{sence}
     * VALUE 数据类型：String code
     */
    String EMAIL_CODE = "jprocms:emailcode:";

    /**
     * 邮件验证码每日使用次数缓存
     * <p>
     * KEY 格式：jprocms:emailcodeused:{email}
     * VALUE 数据类型：Int 次数
     */
    String EMAIL_CODE_USED = "jprocms:emailcodeused:";

    /**
     * IP限制锁定key
     * <p>
     * KEY 格式：jprocms:lock_ip:{ip}
     * VALUE 数据类型：Int 次数
     */
    String LOCK_IP_KEY = "jprocms:lock_ip:";

    /**
     * ip url 请求次数记录
     * KEY 格式：jprocms:ip_url_times:{ip}:{url}
     * VALUE 数据类型：Int 次数
     */
    String IP_URL_REQ_TIME = "jprocms:ip_url_times:";

    /**
     * ip url 请求次数规则触发次数
     * KEY 格式：jprocms:ip_url_exceed_times:{ip}:
     * VALUE 数据类型：Int 次数
     */
    String IP_URL_REQ_EXCEED_TIME = "jprocms:ip_url_exceed_times:";

    /**
     * 字典数据列表 根据类型缓存
     * <p>
     * KEY 格式：jprocms:dictdata
     * VALUE 数据类型： List<DictDataRespDTO>
     */
    String DICT_DATA = "jprocms:dictdata";

    /**
     * 站点的缓存
     * <p>
     * KEY 格式：jprocms:sitecache:{id}
     * VALUE 数据类型：String 内容id信息
     */
    String SITE_CACHE = "jprocms:sitecache";

    /**
     * 配置修改时间
     * <p>
     * KEY 格式：configupdatetime
     * VALUE 数据类型：long timestamp
     */
    String CONFIG_UPDATE_TIME = "jprocms:configupdatetime";

    /**
     * ip 最后评论时间缓存
     * KEY 格式：jprocms:ip_comment:{ip}:
     * VALUE 数据类型：long timestamp
     */
    String IP_COMMENT_LAST_TIME = "jprocms:ip_comment:";
//    /**
//     * ip 请求错误 次数记录
//     * KEY 格式：jprocms:ip_access_error_times:{ip}
//     * VALUE 数据类型：Int 次数
//     */
//    String IP_ACCESS_ERROR_TIME="jprocms:ip_access_error_times:";
//    /**
//     * ip 请求攻击 次数记录
//     * KEY 格式：jprocms:ip_attach_times:{ip}
//     * VALUE 数据类型：Int 次数
//     */
//    String IP_ATTACH_TIME="jprocms:ip_attach_times:";
    /**
     * {@link #LIVE_PREVIEW_LOCK} 的毫秒
     */
    public static final long LIVE_PREVIEW_LOCK_TIMEOUT_MILLIS = 60 * DateUtils.SECOND_MILLIS;
}
